<?php

/*
 * Comentario DAL.
 * @Autor: Inicial.cl.
 */

class ComentarioDAL {

    //METODO PARA GRABAR COMENTARIO.
    public static function grabar($oComentario) {
        try {
            $arr = array(
                "{#MENSAJE}" => $oComentario->getMensaje(),
                "{#IDUSUARIOORIGEN}" => $oComentario->getIdUsuarioOrigen(),
                "{#IDESTADO}" => $oComentario->getIdEstado(),
                "{#IDTIPOCOMENTARIO}" => $oComentario->getIdTipoComentario(),
                "{#IDREGISTRO}" => $oComentario->getIdRegistro()
            );
            $query = Util::getQuery($arr, ComentarioSQL::$GRABAR_COMENTARIO);
            $arrDatos = Bd::exec($query);

            $id = Bd::$IDENTITY; //Retorno id insertado
            return $id;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA EDITAR COMENTARIO.
    public static function editar($oComentario) {
        try {
            $arr = array(
                "{#ID}" => $oComentario->getId(),
                "{#MENSAJE}" => $oComentario->getMensaje(),
                "{#FECHA}" => $oComentario->getFecha(),
                "{#IDUSUARIOORIGEN}" => $oComentario->getIdUsuarioOrigen(),
                "{#IDESTADO}" => $oComentario->getIdEstado(),
                "{#IDTIPOCOMENTARIO}" => $oComentario->getIdTipoComentario(),
                "{#IDREGISTRO}" => $oComentario->getIdRegistro()
            );
            $query = Util::getQuery($arr, ComentarioSQL::$EDITAR_COMENTARIO);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR COMENTARIO.
    public static function listar($oComentario) {
        try {
            $arr = array(
                "{#IDTIPOCOMENTARIO}" => $oComentario->getIdTipoComentario()
            );
            $query = Util::getQuery($arr, ComentarioSQL::$LISTAR_COMENTARIO);
            $arrDatos = Bd::exec($query);
            $arrComentario = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oComentario = new Comentario();

                    $oComentario->setId($row["id"]);
                    $oComentario->setMensaje($row["mensaje"]);
                    $oComentario->setFecha($row["fecha"]);
                    $oComentario->setIdUsuarioOrigen($row["idUsuarioOrigen"]);
                    $oComentario->setIdEstado($row["idEstado"]);
                    $oComentario->setEstado($row["estado"]);
                    $oComentario->setIdTipoComentario($row["idTipoComentario"]);
                    $oComentario->setTipoComentario($row["tipoComentario"]);
                    $oComentario->setIdRegistro($row["idRegistro"]);
                    $oComentario->setParaTitulo($row["paraTitulo"]);
                    $oComentario->setParaMensaje($row["paraMensaje"]);

                    $arrComentario[] = $oComentario;
                }
            }

            return $arrComentario;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }
    
    public static function listarTotalComentarios($oComentario) {
        try {
            $arr = array(
                "{#IDTIPOCOMENTARIO}" => $oComentario->getIdTipoComentario(),
                "{#IDESCORT}" => $oComentario->getIdRegistro()
            );
            $query = Util::getQuery($arr, ComentarioSQL::$LISTAR_TOTAL);
            $arrDatos = Bd::exec($query, Bd::SCALAR);
            $arrComentario = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oComentario = new Comentario();

                    $oComentario->setId($row["id"]);
                    $oComentario->setMensaje($row["mensaje"]);
                    $oComentario->setFecha($row["fecha"]);
                    $oComentario->setIdUsuarioOrigen($row["idUsuarioOrigen"]);
                    $oComentario->setIdEstado($row["idEstado"]);
                    $oComentario->setEstado($row["estado"]);
                    $oComentario->setIdTipoComentario($row["idTipoComentario"]);
                    $oComentario->setTipoComentario($row["tipoComentario"]);
                    $oComentario->setIdRegistro($row["idRegistro"]);
                    $oComentario->setParaTitulo($row["paraTitulo"]);
                    $oComentario->setParaMensaje($row["paraMensaje"]);

                    $arrComentario[] = $oComentario;
                }
            }

            return $arrComentario;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR COMENTARIO.
    public static function listarPorEscort($oComentario, $inicio, $tamannoPagina) {
        try {
            $arr = array(
                "{#IDTIPOCOMENTARIO}" => $oComentario->getIdTipoComentario(),
                "{#IDESCORT}" => $oComentario->getIdRegistro(),
                "{#INICIO}" => $inicio,
                "{#TAMANNOPAGINA}" => $tamannoPagina
            );
            $query = Util::getQuery($arr, ComentarioSQL::$LISTAR_POR_ESCORT);
            $arrDatos = Bd::exec($query);
            $arrComentario = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oComentario = new Comentario();

                    $oComentario->setId($row["id"]);
                    $oComentario->setMensaje($row["mensaje"]);
                    $oComentario->setFecha($row["fecha"]);
                    $oComentario->setIdUsuarioOrigen($row["idUsuarioOrigen"]);
                    $oComentario->setIdEstado($row["idEstado"]);
                    $oComentario->setIdTipoComentario($row["idTipoComentario"]);
                    $oComentario->setIdRegistro($row["idRegistro"]);
                    $oComentario->setRutaAvatar($row["rutaAvatar"]);
                    $oComentario->setUsuario($row["usuario"]);

                    $arrComentario[] = $oComentario;
                }
            }

            return $arrComentario;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }
    
    //METODO PARA LISTAR COMENTARIOS.
    public static function listarComentarios($oComentario, $inicio, $tamannoPagina) {
        try {
            $arr = array(
                "{#IDTIPOCOMENTARIO}" => $oComentario->getIdTipoComentario(),
                "{#IDESCORT}" => $oComentario->getIdRegistro(),
                "{#INICIO}" => $inicio,
                "{#TAMANNOPAGINA}" => $tamannoPagina
            );
            $query = Util::getQuery($arr, ComentarioSQL::$LISTAR_POR_ESCORT);
            $arrDatos = Bd::exec($query);
            $arrComentario = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oComentario = new Comentario();

                    $oComentario->setId($row["id"]);
                    $oComentario->setMensaje($row["mensaje"]);
                    $oComentario->setFecha($row["fecha"]);
                    $oComentario->setIdUsuarioOrigen($row["idUsuarioOrigen"]);
                    $oComentario->setIdEstado($row["idEstado"]);
                    $oComentario->setIdTipoComentario($row["idTipoComentario"]);
                    $oComentario->setIdRegistro($row["idRegistro"]);
                    $oComentario->setRutaAvatar($row["rutaAvatar"]);
                    $oComentario->setUsuario($row["usuario"]);

                    $arrComentario[] = $oComentario;
                }
            }

            return $arrComentario;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR COMENTARIO.
    public static function listarUltimos() {
        try {
            $arr = array();
            $query = Util::getQuery($arr, ComentarioSQL::$LISTAR_COMENTARIO_ULTIMOS);
            $arrDatos = Bd::exec($query);
            $arrComentario = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oComentario = new Comentario();

                    $oComentario->setId($row["id"]);
                    $oComentario->setMensaje($row["mensaje"]);
                    $oComentario->setFecha($row["fecha"]);
                    $oComentario->setIdUsuarioOrigen($row["idUsuarioOrigen"]);
                    $oComentario->setIdEstado($row["idEstado"]);
                    $oComentario->setIdTipoComentario($row["idTipoComentario"]);
                    $oComentario->setTipoComentario($row["tipoComentario"]);
                    $oComentario->setIdRegistro($row["idRegistro"]);
                    $oComentario->setRegistro($row["registro"]);
                    $oComentario->setRutaAvatar($row["rutaAvatar"]);

                    $arrComentario[] = $oComentario;
                }
            }

            return $arrComentario;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA OBTENER POR ID COMENTARIO.
    public static function obtenerPorId($id) {
        try {
            $arr = array(
                "{#ID}" => $id
            );
            $query = Util::getQuery($arr, ComentarioSQL::$OBTENER_COMENTARIO_POR_ID);
            $arrDatos = Bd::exec($query);

            if (count($arrDatos) > 0) {
                $oComentario = new Comentario();

                foreach ($arrDatos as $row) {
                    $oComentario->setId($row["id"]);
                    $oComentario->setMensaje(utf8_encode($row["mensaje"]));
                    $oComentario->setFecha($row["fecha"]);
                    $oComentario->setIdUsuarioOrigen($row["idUsuarioOrigen"]);
                    $oComentario->setIdEstado($row["idEstado"]);
                    $oComentario->setIdTipoComentario($row["idTipoComentario"]);
                    $oComentario->setIdRegistro($row["idRegistro"]);
                    $oComentario->setParaTitulo($row["paraTitulo"]);
                    $oComentario->setParaMensaje($row["paraMensaje"]);
                }
                return $oComentario;
            }
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA ELIMINAR COMENTARIO.
    public static function eliminar($id) {
        try {
            $arr = array("{#ID}" => $id);
            $query = Util::getQuery($arr, ComentarioSQL::$ELIMINAR_COMENTARIO);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }
    
    //METODO PARA LISTAR COMENTARIO.
    public static function listarTopComentaristas() {
        try {
            $arr = array();
            $query = Util::getQuery($arr, ComentarioSQL::$LISTAR_TOP_COMENTARISTAS);
            $arrDatos = Bd::exec($query);
            $arrComentario = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oComentario = new Comentario();

                    $oComentario->setIdUsuarioOrigen($row["idUsuarioOrigen"]);
                    $oComentario->setUsuario($row["usuario"]);
                    $oComentario->setRutaAvatar($row["rutaAvatar"]);
                    $oComentario->setCantidad($row["cantidad"]);

                    $arrComentario[] = $oComentario;
                }
            }

            return $arrComentario;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

}

?>